Menu

  • Step 1:
    
    
    from PyQt5 import QtCore, QtGui, QtWidgets
    
    class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
            MainWindow.setObjectName("MainWindow")
            MainWindow.resize(800, 600)
            self.centralwidget = QtWidgets.QWidget(MainWindow)
            self.centralwidget.setObjectName("centralwidget")
            self.label = QtWidgets.QLabel(self.centralwidget)
            self.label.setGeometry(QtCore.QRect(240, 50, 321, 121))
            font = QtGui.QFont()
            font.setPointSize(36)
            self.label.setFont(font)
            self.label.setObjectName("label")
            MainWindow.setCentralWidget(self.centralwidget)
            self.menubar = QtWidgets.QMenuBar(MainWindow)
            self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
            self.menubar.setObjectName("menubar")
            self.menuFile = QtWidgets.QMenu(self.menubar)
            self.menuFile.setObjectName("menuFile")
            self.menuEdit = QtWidgets.QMenu(self.menubar)
            self.menuEdit.setObjectName("menuEdit")
            MainWindow.setMenuBar(self.menubar)
            self.statusbar = QtWidgets.QStatusBar(MainWindow)
            self.statusbar.setObjectName("statusbar")
            MainWindow.setStatusBar(self.statusbar)
            self.actionCopy = QtWidgets.QAction(MainWindow)
            self.actionCopy.setObjectName("actionCopy")
            self.actionPaste = QtWidgets.QAction(MainWindow)
            self.actionPaste.setObjectName("actionPaste")
            self.actionSave = QtWidgets.QAction(MainWindow)
            self.actionSave.setObjectName("actionSave")
            self.actionNew = QtWidgets.QAction(MainWindow)
            self.actionNew.setObjectName("actionNew")
            self.menuFile.addAction(self.actionNew)
            self.menuFile.addAction(self.actionSave)
            self.menuEdit.addAction(self.actionCopy)
            self.menuEdit.addAction(self.actionPaste)
            self.menubar.addAction(self.menuFile.menuAction())
            self.menubar.addAction(self.menuEdit.menuAction())
    
            self.retranslateUi(MainWindow)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
    
            self.actionNew.triggered.connect(lambda: self.clicked("New was clicked"))
            self.actionSave.triggered.connect(lambda: self.clicked("Save was clicked"))
            self.actionCopy.triggered.connect(lambda: self.clicked("Copy was clicked"))
            self.actionPaste.triggered.connect(lambda: self.clicked("Paste was clicked"))
            
        def retranslateUi(self, MainWindow):
            _translate = QtCore.QCoreApplication.translate
            MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
            self.label.setText(_translate("MainWindow", "TextLabel"))
            self.menuFile.setTitle(_translate("MainWindow", "File"))
            self.menuEdit.setTitle(_translate("MainWindow", "Edit"))
            self.actionCopy.setText(_translate("MainWindow", "Copy"))
            self.actionCopy.setShortcut(_translate("MainWindow", "Ctrl+C"))
            self.actionPaste.setText(_translate("MainWindow", "Paste"))
            self.actionPaste.setShortcut(_translate("MainWindow", "Ctrl+V"))
            self.actionSave.setText(_translate("MainWindow", "Save"))
            self.actionSave.setShortcut(_translate("MainWindow", "Ctrl+S"))
            self.actionNew.setText(_translate("MainWindow", "New"))
            self.actionNew.setShortcut(_translate("MainWindow", "Ctrl+N"))
    
        def clicked(self, text):
            self.label.setText(text)
            self.label.adjustSize()
    
    if __name__ == "__main__":
        import sys
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)
        MainWindow.show()
        sys.exit(app.exec_())
    
    

    Live example

    
    class Window1(QMainWindow):
        def __init__(self, value, parent=None):
            super().__init__(parent)
            self.setWindowTitle('Message Window')
            self.setFixedWidth(500)
            self.setFixedHeight(600)
            self.setWindowIcon(self.style().standardIcon(QStyle.SP_FileDialogInfoView))
    
            self.showMessagePage()
    
        def showMessagePage(self): 
            self.tableWidget = QTableWidget()   
            ... 
            ... 
    
            self.layout = QVBoxLayout()
            self.mainMenu()
            self.layout.addWidget(self.tableWidget)
    
            w = QWidget()
            w.setLayout(self.layout)
            self.setCentralWidget(w)
    
    
        def mainMenu(self):
                # create menu
                menubar = QMenuBar()
                self.layout.addWidget(menubar)
    
                messageM = menubar.addMenu("&Messages") # create a file menu
                newM = QAction("&New", self) # create a QAction
                newM.setShortcut("Ctrl+N") # set a shortcut for it
                messageM.addAction(newM) # and add it to our menu
                newM.triggered.connect(lambda: self.showMessagePage())
    
                contactM = menubar.addMenu("&Contacts") # create a file menu
                importM = QAction("&Import Contact", self) # create a QAction
                importM.setShortcut("Ctrl+I") # set a shortcut for it
                contactM.addAction(importM) # and add it to our menu
                importM.triggered.connect(lambda: self.getExcel()) 
                
                listM = QAction("&All Contacts", self) # create a QAction
                listM.setShortcut("Ctrl+A") # set a shortcut for it
                contactM.addAction(listM) # and add it to our menu
                listM.triggered.connect(lambda: self.showListingPage())